
class Sinaean {
    constructor(name, gender, age, married) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.married = married;
    }
    marry(another) {

        if( this.married ) { // 如果自己已婚
            console.log( `自己(${this.name})都结婚了还想干啥?` );
            return false ;
        }

        if( another.married ){ // 如果对方已婚
            console.log( `对方(${another.name})都结婚了还想干啥?` );
            return false ;
        }

        if( this.gender == another.gender ){ // 如果自己和对方时同性别
            console.log( '很遗憾，我们在中国大陆是不可以结婚的...' );
            return false ;
        }

        // 男满22周岁，女满20周岁
        if( this.gender == '男' ){
            // 如果自己是男性
            if( this.age < 22 ) {
                console.log( `自己(${this.name})尚未到适婚年龄` );
                return false ;
            }
            // 则结婚的对象是女性
            if( another.age < 20 ){
                console.log( `对方(${another.name})尚未到适婚年龄` );
                return false ;
            } 
            // 满足结婚的条件
            return true ;
        } else {
            // 如果自己是女性，则结婚的对象是男性
        }

        return false ; // 如果自己(this)和 another 不可以结婚就返回 false
    }
}

let a = new Sinaean( '杨过' , '男' , 18+6 , false );
let b = new Sinaean( '小龙女' , '女' , 24+6 , false );
let result = a.marry( b ); // a 指向的实例要判断一下 b 指向的实例是否可以和自己结婚
console.log( a.name , result ? '可以' : '不可以' , '与' , b.name , '结婚' );